Embedded or stand-alone NVMs (nonvolatile memories) are memory devices used in digital systems that are capable of storing digital data that is not lost after removal of memory power. Examples of NVMs include, without limitation, flash memory devices and magnetic memory devices such as hard drives and floppy disks.
Often a requirement arises, e.g., in automotive and chipcard applications, that particular protected data in an NVM may never be erased once written, but may only be extended or its value increased. An example of an automotive application is an engine controller, which may also be employed to control other automotive functions such as a windshield wiper or a window actuator. A chipcard such as a credit card formed with a microprocessor may contain protected data such as personal data of the credit card holder. An example of an extended or increased data value is a data word specifying an address range of protected data in an NVM that may only be increased. For example, an NVM may contain an original 128 bytes of protected, unalterable data that is identified for protection with a data word for an address range with value “128.” At a later time, an additional 256 bytes of protected, unalterable data may be stored in the NVM, the address range of which also needs to be identified. The additional 256 bytes of protected data may add an optional function to a suite of functions that may be provided with an automobile. Thus, the new protected address range for the data is 128+256=384 bytes. Accordingly, the address range for the data is increased from 128 to 384, and the byte identifying the new address range needs to be carefully protected. Logic, for example in hardware or firmware, may employ the protected address range to prevent erasing or altering data stored within that range.
Modification of protected data, such as the address range of the data in the example above, is not a problem, in principle, if the content of the NVM is not protected by an ECC (error-correcting code). An ECC protects the integrity of the stored data, allowing identification and correction of a certain number of erroneous bits when the data are read. In addition to the data bits themselves, ECC bits are stored with the data bits. A modern NVM invariably implements an ECC to meet reliability requirements.
Without an ECC, additional bits can be readily added (i.e., written) to previously stored data without altering the already written bits. But with an ECC, the ECC bits for the originally written data should be changed when additional data bits are written. In the general case, some of the original ECC bits would be erased, which is not ordinarily performed in typical NVMs, because in typical NVMs such as flash drives, whole blocks of data are erased, completely removing the information previously stored. This is contrary to the requirement that the specially identified, protected data in an NVM are not erased once written. One option, although inefficient, is to continue writing new blocks of data in a new portion of memory when such an erasable data is updated.
Thus, there is an unresolved need to provide a process and method to extend uneraseable data protected by an error-correcting code in a nonvolatile memory that avoids the disadvantages of conventional approaches.